// 引入全局mixin
// import mixin from "./mixin/mixin.js";
// 引入关于是否mixin集成小程序分享的配置
// import wxshare from './mixin/mpShare.js'
// 全局挂载引入http相关请求拦截插件
import http from "./request";



// 尝试判断在根目录的/store中是否有$u.mixin.js，此文件uView默认为需要挂在到全局的vuex的state变量
// HX2.6.11版本,放到try中,控制台依然会警告,暂时不用此方式，
// let vuexStore = {};
// try {
// 	vuexStore = require("@/store/$u.mixin.js");
// } catch (e) {
// 	//TODO handle the exception
// }

// post类型对象参数转为get类型url参数
import queryParams from "./function/queryParams.js";
// 路由封装
import route from "./function/route.js";
// 时间格式化
import timeFormat from "./function/timeFormat.js";

// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
import colorGradient from "./function/colorGradient.js";
// 生成全局唯一guid字符串
import guid from "./function/guid.js";
// 主题相关颜色,info|success|warning|primary|default|error,此颜色已在uview.scss中定义,但是为js中也能使用,故也定义一份
// import color from "./function/color.js";
// 对象和数组的深度克隆
import deepClone from "./function/deepClone.js";
// 对象深度拷贝
import deepMerge from "./function/deepMerge.js";
// 添加单位
import addUnit from "./function/addUnit.js";

// 规则检验
import test from "./function/test.js";
// 随机数
import random from "./function/random.js";
// 去除空格
import trim from "./function/trim.js";
// toast提示，对uni.showToast的封装
import toast from "./function/toast.js";
// 获取父组件参数
import getParent from "./function/getParent.js";
// 获取整个父组件
import $parent from "./function/$parent.js";
// 获取sys()和os()工具方法
// 获取设备信息，挂载到$u的sys()(system的缩写)属性中，
// 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中，方便取用
import { sys, os, compareVersion } from "./function/sys.js";
// 防抖方法
import debounce from "./function/debounce.js";
// 节流方法
import throttle from "./function/throttle.js";

const $u = {
  queryParams: queryParams,
  route: route.route,
  routeBack: route.back,
  timeFormat: timeFormat,
  date: timeFormat, // 另名date
  guid,
  sys,
  os,
  compareVersion,
  get: http.get,
  post: http.post,
  put: http.put,
  delete: http.delete,
  hexToRgb: colorGradient.hexToRgb,
  rgbToHex: colorGradient.rgbToHex,
  test,
  random,
  deepClone,
  deepMerge,
  getParent,
  $parent,
  addUnit,
  trim,

  http,
  toast,

  debounce,
  throttle,
};

// $u挂载到uni对象上
uni.$u = $u;

const setupLibs = (app) => {
  //   Vue.mixin(mixin);
  //   if (Vue.prototype.openShare) {
  //     Vue.mixin(mpShare);
  //   }
  // Vue.mixin(vuexStore);
  // 时间格式化，同时两个名称，date和timeFormat
  //   Vue.filter("timeFormat", (timestamp, format) => {
  //     return timeFormat(timestamp, format);
  //   });
  //   Vue.filter("date", (timestamp, format) => {
  //     return timeFormat(timestamp, format);
  //   });
  //   // 将多久以前的方法，注入到全局过滤器
  //   Vue.filter("timeFrom", (timestamp, format) => {
  //     return timeFrom(timestamp, format);
  //   });
  app.config.globalProperties.$u = $u;
};

export { setupLibs };
